'''
解题思路

这道题目的思路就是在于如何设计排序方法。

两个字符串前后顺序颠倒的情况下，如何比较谁大谁小？
这里我们借用functools中的cmp_to_key工具，把比较函数嵌入到sorted中。
其比较函数就是看两个字符串前后拼接后谁打谁小决定顺序。

'''

class Solution:
    def largestNumber(self, nums: List[int]) -> str:
        nums_str = list(map(str, nums))
        compare = lambda x, y: 1 if x + y < y + x else -1
        nums_str = sorted(nums_str, key = functools.cmp_to_key(compare))
        if nums_str[0] == '0':
            return '0'
        else:
            return ''.join(nums_str)
        